﻿'
' Boogaloo® - http://www.mindfly.com
' Copyright (c) 2008
' by Mindfly, Inc.
'
' Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated 
' documentation files (the "Software"), to deal in the Software without restriction, including without limitation 
' the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and 
' to permit persons to whom the Software is furnished to do so, subject to the following conditions:
'
' The above copyright notice and this permission notice shall be included in all copies or substantial portions 
' of the Software.
'
' THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
' INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
' DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
' SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
' SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
' WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
' THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Imports System.Xml
Imports System.Web

Namespace Rss


    ''' <summary>
    ''' Describes a media object that is attached to the item.
    ''' </summary>
    Public Class RssItemEnclosure
        Inherits RssBase

        Public Sub New(ByVal url As String, ByVal length As Integer, ByVal type As String)
            Me.url = url
            Me.length = length
            Me.type = type
        End Sub

        ''' <summary>
        ''' returns an instantiation of RssItemEnclosure if rss item xml contains an enclosure element
        ''' </summary>
        Public Shared Function GetRssItemEnclosure(ByVal item As XmlNode) As RssItemEnclosure
            Dim re As RssItemEnclosure = Nothing
            If item.SelectSingleNode("enclosure") IsNot Nothing Then
                With CType(item.SelectSingleNode("enclosure"), XmlElement)
                    Try
                        re = New RssItemEnclosure(.GetAttribute("url"), CType(.GetAttribute("length"), Integer), .GetAttribute("type"))
                    Catch ex As Exception
                        re = Nothing
                    End Try
                End With
            End If
            Return re
        End Function


        Public Function ToXmlString() As String
            Return String.Format("<enclosure url=""{0}"" length=""{1}"" type=""{2}"" />", GetSafeXml(url), GetSafeXml(length.ToString), GetSafeXml(type))
        End Function

        ''' <summary>
        ''' Url to the media
        ''' </summary>
        Private _url As String
        Public Property url() As String
            Get
                Return _url
            End Get
            Set(ByVal value As String)
                _url = value
            End Set
        End Property

        ''' <summary>
        ''' length in bytes
        ''' </summary>
        Private _length As Integer
        Public Property length() As Integer
            Get
                Return _length
            End Get
            Set(ByVal value As Integer)
                _length = value
            End Set
        End Property

        ''' <summary>
        ''' MIME type (ex. audio/mpeg)
        ''' </summary>
        Private _type As String
        Public Property type() As String
            Get
                Return _type
            End Get
            Set(ByVal value As String)
                _type = value
            End Set
        End Property

    End Class

End Namespace